package day_04;

/**
 * 给出一个 32 位的有符号整数，你需要将这个整数中每位上的数字进行反转。
 */
public class leetcode_7 {
   public int reverse(int x){
       //对于大于2^32的报错返回使用try 返回0
      /* try {
           boolean f = false;
           if (x < 0) {
               x = 0 - x;
               f = true;
           }
           if (x == 0|| x>Math.pow(2,32)-1) {
               return 0;
           }
           char[] num = String.valueOf(x).toCharArray();
           StringBuffer newnum = new StringBuffer();
           if (num[num.length - 1] == '0') {
               for (int n = num.length - 2; n >= 0; n--)
                   newnum.append(num[n]);
           } else {
               for (int n = num.length - 1; n >= 0; n--)
                   newnum.append(num[n]);
           }
           int n = Integer.parseInt(newnum.toString());
           if (f == true)
               return 0 - n;
           return n;
       }catch (Exception e)
       {
           return 0;
       }*/

      /*try{
           int mm=x>0?1:-1;
           if(x==0)
               return 0;
           String num=String.valueOf(Math.abs(x));
           String new_num=new StringBuffer(num).reverse().toString();
           int k=Integer.valueOf(new_num);
           return mm*k;
       }catch (Exception e){
           return 0;
       }*/
      /*
      int ans=0;
      int pop=0;
      if(x>=0) {
          while (x != 0) {
              pop = x % 10;
              if (ans > Integer.MAX_VALUE / 10 || (ans == Integer.MAX_VALUE && pop > 7))//正数
                  return 0;
              ans = ans * 10 + pop;
              x = x / 10;
          }
      }
       if(x<0) {
           while (x != 0) {
               pop = x % 10;
               if (ans < Integer.MIN_VALUE / 10 || (ans == Integer.MIN_VALUE && pop < -8))//负数
                   return 0;
               ans = ans * 10 + pop;
               x = x / 10;
           }
       }
      return ans;*/
       int ans=0;
       int pop=0;
       while(x!=0){
           pop=x%10;
           if(ans>Integer.MAX_VALUE/10||(ans==Integer.MAX_VALUE&&pop>7))//正数
               return 0;
           if(ans<Integer.MIN_VALUE/10||(ans==Integer.MIN_VALUE&&pop<-8))//负数
               return 0;
           ans=ans*10+pop;
           x=x/10;
       }
       return ans;


   }
}
